"""
2、下面程序的功能是：解决买水问题，输入钱数，输出可买水的瓶数。规则如下：1元钱可以买1瓶水，2个空瓶可以换1瓶水，3个瓶盖也可以换1瓶水。请找出错误并修改验证。
"""
# 错误代码
# Water = int(input('请输入钱数：'))
# # 定义买水的函数，nW 表示新水的数量，nB 表示新瓶的数量，nL 表示新盖的数量
# def f(nW, nB, nL):
#     global Water, bottle, lid
#     bottle = nB + nW
#     lid = nL + nW
#     nW = bottle // 2 + lid
#     Water += nW
#     bottle = bottle %
#     lid = lid % 3
#     if (nB < 2 or nL < 3 or nW < 1):
#         return
#     else:
#         f(nW, nB, nL)
# f(Water, 0, 0)
# print(Water)
# 正确代码
Water = int(input('请输入钱数：'))
# 定义买水的函数，nW 表示新水的数量，nB 表示新瓶的数量，nL 表示新盖的数量
def f(nW, nB, nL):
    global Water, bottle, lid
    bottle = nB + nW
    lid = nL + nW
    nW = bottle // 2 + lid // 3
    Water += nW
    nB = bottle % 2
    nL = lid % 3
    if (nB < 2 and nL < 3 and nW < 1):
        return
    else:
        f(nW, nB, nL)
f(Water, 0, 0)
print(Water)
"""
以3瓶为例：
第一轮兑换：
空瓶：3÷2=1瓶水（余1空瓶）
瓶盖：3÷3=1瓶水（余0瓶盖）
共换得2瓶水
喝完后：1+2=3个空瓶 + 0+2=2个瓶盖
累计：3+2=5瓶

第二轮兑换：
空瓶：3÷2=1瓶水（余1空瓶）
瓶盖：2÷3=0瓶水（余2瓶盖）
共换得1瓶水
喝完后：1+1=2个空瓶 + 2+1=3个瓶盖
累计：5+1=6瓶

第三轮兑换：
空瓶：2÷2=1瓶水（余0空瓶）
瓶盖：3÷3=1瓶水（余0瓶盖）
共换得2瓶水
喝完后：0+2=2个空瓶 + 0+2=2个瓶盖
累计：6+2=8瓶

第四轮兑换：
空瓶：2÷2=1瓶水（余0空瓶）
瓶盖：2÷3=0瓶水（余2瓶盖）
共换得1瓶水
喝完后：0+1=1个空瓶 + 2+1=3个瓶盖
累计：8+1=9瓶

第五轮兑换：
空瓶：1÷2=0瓶水（余1空瓶）
瓶盖：3÷3=1瓶水（余0瓶盖）
共换得1瓶水
喝完后：1+1=2个空瓶 + 0+1=1个瓶盖
累计：9+1=10瓶

第六轮兑换：
空瓶：2÷2=1瓶水（余0空瓶）
瓶盖：1÷3=0瓶水（余1瓶盖）
共换得1瓶水
喝完后：0+1=1个空瓶 + 1+1=2个瓶盖
累计：10+1=11瓶
"""
